#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>  // 系统错误码
#include "linklist.h"

// 需求方
int main(int argc, char const *argv[])
{
    // 1. 搞个空链表 
    linklist head = init_list();

    // 2. 循环地输入数据，正数就插入链表，负数就试图剔除其绝对值节点
    while(1)
    {
        int n;
        scanf("%d", &n);

        if(n == 0)
            break;

        // 增加节点
        // 为了能修改实参head，必须传递其地址    
        if(n > 0)
            list_add_tail(&head, new_node(n)); 

        // 剔除节点
        else if(n < 0)
        {
            linklist p;
            if((p=list_del(&head, -n)) == NULL)
            {
                printf("查无此人！\n");
                continue;;
            }

            // 处理被剔除出链表的节点
            free(p);
        }

        // 遍历显示节点
        show_list(head);
    }

    return 0;
}
